}
if ((strlen(buff)) && (strstr(buff, ",") != NULL)) {
+ bool ozi_fsdata_used = false;
ozi_fsdata *fsdata = ozi_alloc_fsdata();
wpt_tmp = waypt_new();
while (s) {
switch (ozi_objective) {
case trkdata:
- wpt_tmp = waypt_new();
ozi_parse_track(i, s, wpt_tmp, trk_name);
break;
case rtedata:
if (linecount > 5 && wpt_tmp) {/* skipping over file header */
ozi_convert_datum(wpt_tmp);
if (!header) {
- route_add_wpt(rte_head, wpt_tmp);
+ route_add_wpt(rte_head, wpt_tmp);
+ } else {
+ waypt_free(wpt_tmp);
}
} else {
waypt_free(wpt_tmp);
case wptdata:
case unknown_gpsdata:
if (linecount > 4) { /* skipping over file header */
+ ozi_fsdata_used = true;
fs_chain_add(&(wpt_tmp->fs),
(format_specific_data *) fsdata);
ozi_convert_datum(wpt_tmp);
break;
}
+ if (!ozi_fsdata_used) {
+ fs_chain_destroy((format_specific_data *) fsdata);
+ }
+
} else {
/* empty line */
}